<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
    <title>PetriNet</title>
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    <link rel="stylesheet" type="text/css" href="css/tipsy.css" />
    <script type="text/javascript" src="js/dagre-d3.min.js"></script>
    <script src="js/d3.v4.min.js"></script>
    <script src="js/jquery-1.9.1.min.js"></script>
    <script src="js/tipsy.js"></script>
<style>
g.T10>circle {
   fill: pink; 
}

g.T10>rect {
   fill: pink; 
}

g.T13>circle {
   fill: green; 
}

g.T13>rect {
   fill: green; 
}

g.T14>circle {
   fill: orange; 
}

g.T14>rect {
   fill: orange; 
}

</style>
</head>
<body>
<svg width=1400 height=1000></svg>
<script type="text/javascript">
var g = new dagreD3.graphlib.Graph().setGraph({});
g.setNode('P10_0',{label:'P10_0', shape:'circle', description:'this is a source place node, it belongs thread:10', class:'T10'});
g.setNode('T0',{label:'write(10,4294967298)', shape:'rect', description:'thread: 10, position: MyTest.java#6', class:'T10'});
g.setEdge('P10_0', 'T0', {});
g.setNode('P10_1',{label:'P10_1', shape:'circle', description:'this is a source place node, it belongs thread:10', class:'T10'});
g.setEdge('T0', 'P10_1', {});
g.setNode('T1',{label:'write(10,4294967299)', shape:'rect', description:'thread: 10, position: MyTest.java#7', class:'T10'});
g.setEdge('P10_1', 'T1', {});
g.setNode('P10_2',{label:'P10_2', shape:'circle', description:'this is a source place node, it belongs thread:10', class:'T10'});
g.setEdge('T1', 'P10_2', {});
g.setNode('T2',{label:'write(10,4294967300)', shape:'rect', description:'thread: 10, position: MyTest.java#8', class:'T10'});
g.setEdge('P10_2', 'T2', {});
g.setNode('P10_3',{label:'P10_3', shape:'circle', description:'this is a source place node, it belongs thread:10', class:'T10'});
g.setEdge('T2', 'P10_3', {});
g.setNode('T3',{label:'write(10,47244640263)', shape:'rect', description:'thread: 10, position: MyTest.java#45', class:'T10'});
g.setEdge('P10_3', 'T3', {});
g.setNode('P10_4',{label:'P10_4', shape:'circle', description:'this is a source place node, it belongs thread:10', class:'T10'});
g.setEdge('T3', 'P10_4', {});
g.setNode('T4',{label:'write(10,51539607559)', shape:'rect', description:'thread: 10, position: MyTest.java#66', class:'T10'});
g.setEdge('P10_4', 'T4', {});
g.setNode('P10_5',{label:'P10_5', shape:'circle', description:'this is a source place node, it belongs thread:10', class:'T10'});
g.setEdge('T4', 'P10_5', {});
g.setNode('T5',{label:'start(10,13)', shape:'rect', description:'thread: 10, position: MyTest.java#36', class:'T10'});
g.setEdge('P10_5', 'T5', {});
g.setNode('P10_6',{label:'P10_6', shape:'circle', description:'this is a source place node, it belongs thread:10', class:'T10'});
g.setEdge('T5', 'P10_6', {});
g.setNode('T6',{label:'start(10,14)', shape:'rect', description:'thread: 10, position: MyTest.java#37', class:'T10'});
g.setEdge('P10_6', 'T6', {});
g.setNode('P10_7',{label:'P10_7', shape:'circle', description:'this is a source place node, it belongs thread:10', class:'T10'});
g.setEdge('T6', 'P10_7', {});
g.setNode('T47',{label:'join(10,13)', shape:'rect', description:'thread: 10, position: MyTest.java#38', class:'T10'});
g.setEdge('P10_7', 'T47', {});
g.setNode('P10_8',{label:'P10_8', shape:'circle', description:'this is a source place node, it belongs thread:10', class:'T10'});
g.setEdge('T47', 'P10_8', {});
g.setNode('T48',{label:'join(10,14)', shape:'rect', description:'thread: 10, position: MyTest.java#39', class:'T10'});
g.setEdge('P10_8', 'T48', {});
g.setNode('P10_9',{label:'P10_9', shape:'circle', description:'this is a source place node, it belongs thread:10', class:'T10'});
g.setEdge('T48', 'P10_9', {});
g.setNode('P14_0',{label:'P14_0', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('T6', 'P14_0', {});
g.setNode('T9',{label:'read(14,4294967300)', shape:'rect', description:'thread: 14, position: MyTest.java#27', class:'T14'});
g.setEdge('P14_0', 'T9', {});
g.setNode('P14_1',{label:'P14_1', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('T9', 'P14_1', {});
g.setNode('T11',{label:'acq(14,16)', shape:'rect', description:'thread: 14, position: MyTest.java#27', class:'T14'});
g.setEdge('P14_1', 'T11', {});
g.setNode('P14_2',{label:'P14_2', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('T11', 'P14_2', {});
g.setNode('T18',{label:'read(14,4294967299)', shape:'rect', description:'thread: 14, position: MyTest.java#28', class:'T14'});
g.setEdge('P14_2', 'T18', {});
g.setNode('P14_3',{label:'P14_3', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('T18', 'P14_3', {});
g.setNode('T19',{label:'rel(14,16)', shape:'rect', description:'thread: 14, position: MyTest.java#27', class:'T14'});
g.setEdge('P14_3', 'T19', {});
g.setNode('P14_4',{label:'P14_4', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('T19', 'P14_4', {});
g.setNode('T20',{label:'write(14,4294967298)', shape:'rect', description:'thread: 14, position: MyTest.java#31', class:'T14'});
g.setEdge('P14_4', 'T20', {});
g.setNode('P14_5',{label:'P14_5', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('T20', 'P14_5', {});
g.setNode('T21',{label:'read(14,60129542150)', shape:'rect', description:'thread: 14, position: MyTest.java#33', class:'T14'});
g.setEdge('P14_5', 'T21', {});
g.setNode('P14_6',{label:'P14_6', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('T21', 'P14_6', {});
g.setNode('T22',{label:'read(14,51539607559)', shape:'rect', description:'thread: 14, position: MyTest.java#70', class:'T14'});
g.setEdge('P14_6', 'T22', {});
g.setNode('P14_7',{label:'P14_7', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('T22', 'P14_7', {});
g.setNode('T23',{label:'acq(14,15)', shape:'rect', description:'thread: 14, position: MyTest.java#70', class:'T14'});
g.setEdge('P14_7', 'T23', {});
g.setNode('P14_8',{label:'P14_8', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('T23', 'P14_8', {});
g.setNode('T24',{label:'read(14,51539607559)', shape:'rect', description:'thread: 14, position: MyTest.java#72', class:'T14'});
g.setEdge('P14_8', 'T24', {});
g.setNode('P14_9',{label:'P14_9', shape:'circle', description:'this is a selection place node, it belongs thread:14', class:'T14'});
g.setEdge('T24', 'P14_9', {});
g.setNode('T25',{label:'skip', shape:'rect', description:'thread: 14, position: MyTest.java#72', class:'T14'});
g.setEdge('P14_9', 'T25', {});
g.setNode('P14_13',{label:'P14_13', shape:'circle', description:'this is a selection place node, it belongs thread:14', class:'T14'});
g.setEdge('T25', 'P14_13', {});
g.setNode('T29',{label:'read(14,51539607559)', shape:'rect', description:'thread: 14, position: MyTest.java#76', class:'T14'});
g.setEdge('P14_13', 'T29', {});
g.setNode('P14_14',{label:'P14_14', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('T29', 'P14_14', {});
g.setNode('T30',{label:'read(14,51539607559)', shape:'rect', description:'thread: 14, position: MyTest.java#77', class:'T14'});
g.setEdge('P14_14', 'T30', {});
g.setNode('P14_15',{label:'P14_15', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('T30', 'P14_15', {});
g.setNode('T31',{label:'read(14,51539607559)', shape:'rect', description:'thread: 14, position: MyTest.java#78', class:'T14'});
g.setEdge('P14_15', 'T31', {});
g.setNode('P14_16',{label:'P14_16', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('T31', 'P14_16', {});
g.setNode('T32',{label:'notifyAll(14,15)', shape:'rect', description:'thread: 14, position: MyTest.java#78', class:'T14'});
g.setEdge('P14_16', 'T32', {});
g.setNode('P14_17',{label:'P14_17', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('T32', 'P14_17', {});
g.setNode('T35',{label:'rel(14,15)', shape:'rect', description:'thread: 14, position: MyTest.java#70', class:'T14'});
g.setEdge('P14_17', 'T35', {});
g.setNode('P14_20',{label:'P14_20', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('T35', 'P14_20', {});
g.setEdge('P14_20', 'T48', {});
g.setNode('Plock0',{label:'Plock0', shape:'circle', description:'this is a lock place node', class:'T0'});
g.setEdge('T35', 'Plock0', {});
g.setNode('T10',{label:'acq(13,15)', shape:'rect', description:'thread: 13, position: MyTest.java#49', class:'T13'});
g.setEdge('Plock0', 'T10', {});
g.setNode('P13_3',{label:'P13_3', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('T10', 'P13_3', {});
g.setNode('T12',{label:'read(13,47244640263)', shape:'rect', description:'thread: 13, position: MyTest.java#51', class:'T13'});
g.setEdge('P13_3', 'T12', {});
g.setNode('P13_4',{label:'P13_4', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('T12', 'P13_4', {});
g.setNode('T13',{label:'read(13,47244640263)', shape:'rect', description:'thread: 13, position: MyTest.java#52', class:'T13'});
g.setEdge('P13_4', 'T13', {});
g.setNode('P13_5',{label:'P13_5', shape:'circle', description:'this is a selection place node, it belongs thread:13', class:'T13'});
g.setEdge('T13', 'P13_5', {});
g.setNode('T14',{label:'skip', shape:'rect', description:'thread: 13, position: MyTest.java#52', class:'T13'});
g.setEdge('P13_5', 'T14', {});
g.setNode('P13_9',{label:'P13_9', shape:'circle', description:'this is a selection place node, it belongs thread:13', class:'T13'});
g.setEdge('T14', 'P13_9', {});
g.setNode('T36',{label:'read(13,47244640263)', shape:'rect', description:'thread: 13, position: MyTest.java#51', class:'T13'});
g.setEdge('P13_9', 'T36', {});
g.setNode('P13_10',{label:'P13_10', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('T36', 'P13_10', {});
g.setNode('T37',{label:'read(13,34359738377)', shape:'rect', description:'thread: 13, position: MyTest.java#54', class:'T13'});
g.setEdge('P13_10', 'T37', {});
g.setNode('P13_11',{label:'P13_11', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('T37', 'P13_11', {});
g.setNode('T38',{label:'read(13,47244640263)', shape:'rect', description:'thread: 13, position: MyTest.java#54', class:'T13'});
g.setEdge('P13_11', 'T38', {});
g.setNode('P13_12',{label:'P13_12', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('T38', 'P13_12', {});
g.setNode('T39',{label:'read(13,47244640263)', shape:'rect', description:'thread: 13, position: MyTest.java#55', class:'T13'});
g.setEdge('P13_12', 'T39', {});
g.setNode('P13_13',{label:'P13_13', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('T39', 'P13_13', {});
g.setNode('T40',{label:'notifyAll(13,15)', shape:'rect', description:'thread: 13, position: MyTest.java#55', class:'T13'});
g.setEdge('P13_13', 'T40', {});
g.setNode('P13_14',{label:'P13_14', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('T40', 'P13_14', {});
g.setNode('T41',{label:'rel(13,15)', shape:'rect', description:'thread: 13, position: MyTest.java#49', class:'T13'});
g.setEdge('P13_14', 'T41', {});
g.setNode('P13_15',{label:'P13_15', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('T41', 'P13_15', {});
g.setNode('T42',{label:'write(13,4294967298)', shape:'rect', description:'thread: 13, position: MyTest.java#17', class:'T13'});
g.setEdge('P13_15', 'T42', {});
g.setNode('P13_16',{label:'P13_16', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('T42', 'P13_16', {});
g.setNode('T43',{label:'read(13,4294967300)', shape:'rect', description:'thread: 13, position: MyTest.java#18', class:'T13'});
g.setEdge('P13_16', 'T43', {});
g.setNode('P13_17',{label:'P13_17', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('T43', 'P13_17', {});
g.setNode('T44',{label:'acq(13,16)', shape:'rect', description:'thread: 13, position: MyTest.java#18', class:'T13'});
g.setEdge('P13_17', 'T44', {});
g.setNode('P13_18',{label:'P13_18', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('T44', 'P13_18', {});
g.setNode('T45',{label:'write(13,4294967299)', shape:'rect', description:'thread: 13, position: MyTest.java#19', class:'T13'});
g.setEdge('P13_18', 'T45', {});
g.setNode('P13_19',{label:'P13_19', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('T45', 'P13_19', {});
g.setNode('T46',{label:'rel(13,16)', shape:'rect', description:'thread: 13, position: MyTest.java#18', class:'T13'});
g.setEdge('P13_19', 'T46', {});
g.setNode('P13_20',{label:'P13_20', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('T46', 'P13_20', {});
g.setEdge('P13_20', 'T47', {});
g.setNode('Plock1',{label:'Plock1', shape:'circle', description:'this is a lock place node', class:'T0'});
g.setEdge('T46', 'Plock1', {});
g.setEdge('Plock1', 'T11', {});
g.setEdge('Plock1', 'T44', {});
g.setEdge('T41', 'Plock0', {});
g.setNode('T17',{label:'compete', shape:'rect', description:'thread: 13, position: MyTest.java#52', class:'T13'});
g.setEdge('Plock0', 'T17', {});
g.setEdge('T17', 'P13_9', {});
g.setEdge('Plock0', 'T23', {});
g.setNode('T28',{label:'compete', shape:'rect', description:'thread: 14, position: MyTest.java#72', class:'T14'});
g.setEdge('Plock0', 'T28', {});
g.setEdge('T28', 'P14_13', {});
g.setNode('T15',{label:'wait(13,15)', shape:'rect', description:'thread: 13, position: MyTest.java#52', class:'T13'});
g.setEdge('P13_5', 'T15', {});
g.setNode('P13_6',{label:'P13_6', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('T15', 'P13_6', {});
g.setNode('T16',{label:'wake', shape:'rect', description:'thread: 13, position: MyTest.java#52', class:'T13'});
g.setEdge('P13_6', 'T16', {});
g.setNode('P13_7',{label:'P13_7', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('P13_7', 'T16', {});
g.setNode('P13_8',{label:'P13_8', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('T16', 'P13_8', {});
g.setEdge('P13_8', 'T17', {});
g.setEdge('T15', 'Plock0', {});
g.setNode('P14_18',{label:'P14_18', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('T32', 'P14_18', {});
g.setNode('T33',{label:'notify2', shape:'rect', description:'thread: 14, position: MyTest.java#78', class:'T14'});
g.setEdge('P14_18', 'T33', {});
g.setEdge('T33', 'P13_7', {});
g.setNode('P14_19',{label:'P14_19', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('T32', 'P14_19', {});
g.setNode('T34',{label:'notify2', shape:'rect', description:'thread: 14, position: MyTest.java#78', class:'T14'});
g.setEdge('P14_19', 'T34', {});
g.setNode('P14_11',{label:'P14_11', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('T34', 'P14_11', {});
g.setNode('T27',{label:'wake', shape:'rect', description:'thread: 14, position: MyTest.java#72', class:'T14'});
g.setEdge('P14_11', 'T27', {});
g.setNode('P14_10',{label:'P14_10', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('P14_10', 'T27', {});
g.setNode('P14_12',{label:'P14_12', shape:'circle', description:'this is a source place node, it belongs thread:14', class:'T14'});
g.setEdge('T27', 'P14_12', {});
g.setEdge('P14_12', 'T28', {});
g.setNode('T26',{label:'wait(14,15)', shape:'rect', description:'thread: 14, position: MyTest.java#72', class:'T14'});
g.setEdge('P14_9', 'T26', {});
g.setEdge('T26', 'P14_10', {});
g.setEdge('T26', 'Plock0', {});
g.setEdge('T19', 'Plock1', {});
g.setNode('P13_0',{label:'P13_0', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('T5', 'P13_0', {});
g.setNode('T7',{label:'read(13,55834574853)', shape:'rect', description:'thread: 13, position: MyTest.java#16', class:'T13'});
g.setEdge('P13_0', 'T7', {});
g.setNode('P13_1',{label:'P13_1', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('T7', 'P13_1', {});
g.setNode('T8',{label:'read(13,47244640263)', shape:'rect', description:'thread: 13, position: MyTest.java#49', class:'T13'});
g.setEdge('P13_1', 'T8', {});
g.setNode('P13_2',{label:'P13_2', shape:'circle', description:'this is a source place node, it belongs thread:13', class:'T13'});
g.setEdge('T8', 'P13_2', {});
g.setEdge('P13_2', 'T10', {});
var render = new dagreD3.render();
var svg = d3.select("svg"), inner = svg.append("g");
var zoom = d3.zoom().on("zoom", function() {inner.attr("transform", d3.event.transform);});
svg.call(zoom);
var styleTooltip = function(name, description) {return "<p class='name'>" + name + "</p><p class='description'>" + description + "</p>";};
render(inner, g);
inner.selectAll("g.node")
  .attr("title", function(v) { return styleTooltip(v, g.node(v).description) })
  .each(function(v) { $(this).tipsy({ gravity: "w", opacity: 1, html: true }); });
var initialScale = 0.75;
svg.call(zoom.transform, d3.zoomIdentity.translate((svg.attr("width") - g.graph().width * initialScale) / 2, 20).scale(initialScale));
</script>
</body>
</html>
